package Class.senior.demo09;

import java.util.*;

// Map是平时更常用的数据集合 因为他支持键值对
public class HashMapClass {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        // 新增元素
        hashMap.put("明太祖", "朱元璋");
        hashMap.put("明成祖", "朱棣");
        hashMap.put("明孝宗", "朱佑樘");
        // hashMap是对象
        System.out.println(hashMap);
        // 删除元素 输入键名
        hashMap.remove("明太祖");
        System.out.println(hashMap);
        // 查询元素 输入键名
        System.out.println(hashMap.get("明孝宗"));

        // 注意 hashMap是对象，不是集合
        // 如果要集合用ArrayList
        String singer1 = "五月天";
        List<String> songList1 = new ArrayList<>();
        songList1.add("七里香");
        songList1.add("夜曲");
        songList1.add("牛仔很忙");
        HashMap hashMap1 = new HashMap();
        hashMap1.put("周杰伦", songList1);
        System.out.println(songList1);
        // 为什么这里是Object，不是String
        if (singer1.equals("周杰伦")) {
            for (String item : songList1) {
                System.out.println(singer1 + ":" + item);
            }
        } else {
            System.out.println("这不是周杰伦");
        }
        // 元素查询

        // 统计字符串中每个字符出现的次数
        String str = "aaaabbbcccccccccc";
        char[] arr = str.toCharArray(); // 将字符串转换成字符数组
        HashMap map = new HashMap(); // 创建双列集合存储键和值

        for (int i = 0; i < arr.length; i++) {
            if (!map.containsKey(arr[i])) {
                map.put(arr[i], 1);
            } else {
//                System.out.println("+++" + map.get(arr[i]));
                map.put(arr[i], (int)map.get(arr[i]) + 1);
            }
        }
//        for (int i = 0; i < map.size(); i++) {
//            System.out.println(map[i], map.get(map[i]));
//        }
        for (Object item : map.keySet()) {
            System.out.println(item + "+" + map.get(item));
        }
    }
}
